iT邦幫忙

2025 iThome 鐵人賽

DAY 4
0

543 Diameter of Binary Tree

thoughts

  • 樹的直徑:任意兩個節點之間的最長路徑(經過 root 或不經 root)。
  • DFS 計算每個節點的左右子樹高度,更新最大直徑。

kotlin

class Solution {
    private var diameter = 0

    fun diameterOfBinaryTree(root: TreeNode?): Int {
        dfs(root)
        return diameter
    }

    private fun dfs(node: TreeNode?): Int {
        if (node == null) return 0
        val left = dfs(node.left)
        val right = dfs(node.right)
        diameter = maxOf(diameter, left + right)
        return maxOf(left, right) + 1
    }
}

follow up

  • 如果要回傳實際的路徑 (而不是長度),怎麼修改?
  • 能否用 BFS + 兩次最遠點搜索 來計算直徑?(樹的直徑經典解法)
  • 若樹是動態新增節點,如何維護直徑?

上一篇
#10
下一篇
#12
系列文
來都來了-涮就涮吧16
  1. 12
    #11
  2. 13
    #12
  3. 14
    #13
  4. 15
    #14
  5. 16
    #15
完整目錄
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言